💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    26 장고 프로젝트 배포 | ✅ 편저: 코담 운영자

    26강 - 장고 프로젝트 배포: Heroku + AWS S3 정적/미디어 파일 연동

    배포 - heroku, aws s3


    ✨ 이번 강의 목표

    • Django 앱을 Heroku에 배포하여 실제 서비스 운영 환경 구축
    • 정적(static) 및 미디어(media) 파일을 AWS S3로 관리하여 효율적인 파일 전송 구성
    • 배포 환경에 필요한 설정 및 .env 분리 전략 습득

    1. 사전 준비

    항목 설명
    AWS S3 버킷 생성, IAM 사용자 생성, 권한 설정 필요
    Heroku 회원가입, Heroku CLI 설치, PostgreSQL Add-on 사용
    로컬 프로젝트 Django 앱 구조 완성 및 Git 저장소 관리 중일 것

    2. AWS S3 설정

    1) S3 버킷 생성

    • 이름: 고유한 이름 (예: your-project-static)
    • 리전: ap-northeast-2 (서울)
    • 퍼블릭 엑세스 허용 설정 (정적 파일만 공개됨)

    2) 버킷 정책 예시

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": ["s3:GetObject"],
          "Resource": ["arn:aws:s3:::your-bucket-name/*"]
        }
      ]
    }
    

    3) IAM 사용자 생성

    • 권한: AmazonS3FullAccess
    • Access Key / Secret 발급 후 .env 또는 Heroku에 등록

    3. Django 설정: AWS S3 연동

    1) 필요한 패키지 설치

    pip install boto3 django-storages
    

    2) settings/production.py 예시

    INSTALLED_APPS += ["storages"]
    
    AWS_ACCESS_KEY_ID = env("AWS_ACCESS_KEY_ID")
    AWS_SECRET_ACCESS_KEY = env("AWS_SECRET_ACCESS_KEY")
    AWS_STORAGE_BUCKET_NAME = env("AWS_STORAGE_BUCKET_NAME")
    AWS_S3_REGION_NAME = "ap-northeast-2"
    AWS_S3_CUSTOM_DOMAIN = f"{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com"
    
    STATICFILES_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
    DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
    
    STATIC_URL = f"https://{AWS_S3_CUSTOM_DOMAIN}/static/"
    MEDIA_URL = f"https://{AWS_S3_CUSTOM_DOMAIN}/media/"
    

    4. Heroku 배포 준비

    1) 필수 파일 생성

    • Procfile
    web: gunicorn config.wsgi:application
    
    • runtime.txt
    python-3.11.7
    
    • requirements.txt
    pip freeze > requirements.txt
    

    2) Heroku CLI로 앱 생성 및 DB 추가

    heroku login
    heroku create your-app-name
    heroku addons:create heroku-postgresql:hobby-dev
    

    5. 환경변수 등록

    Heroku에 프로젝트 설정값을 등록합니다.

    heroku config:set DJANGO_SETTINGS_MODULE=config.settings.production
    heroku config:set DJANGO_SECRET_KEY='복잡한랜덤값'
    heroku config:set AWS_ACCESS_KEY_ID='your-access-key'
    heroku config:set AWS_SECRET_ACCESS_KEY='your-secret-key'
    heroku config:set AWS_STORAGE_BUCKET_NAME='your-bucket-name'
    

    📌 .env 파일 사용 시 django-environ과 함께 관리할 수 있습니다.


    6. Heroku로 배포

    git add .
    git commit -m "Prepare for Heroku deployment"
    git push heroku master  # 또는 main
    

    이후 마이그레이션 및 관리자 계정 생성:

    heroku run python manage.py migrate
    heroku run python manage.py createsuperuser
    

    사이트 접속:

    heroku open
    

    ✅ 정리

    항목 설명
    정적/미디어 파일 AWS S3에 저장되며 브라우저가 직접 로딩
    서버 실행 Heroku는 gunicorn으로 앱 실행
    DB PostgreSQL은 자동으로 연결 (DATABASE_URL 환경 변수 기반)
    보안 민감한 키 값은 환경 변수로 분리 (.env 또는 config:set)

    👉 다음 강의에서는 유지보수 전략, 로그 확인, 혹은 모니터링 도구를 활용한 운영 기법을 살펴볼 수 있습니다.

    TOP
    preload preload